<?php /* 
==================================================
TextCMS -- simple plain/text CMS with GPL licence
Sitemap building module
(c) 2008, 4X_Pro
Visit us online: http://textcms.ru
==================================================
*/

/** Построение sitemap.
Исходные данные -- массив страниц, каждый элемент -- хеш с данными о странице 
(такой же передается в cmsmain_save_pageinfo_saveall)
Результат выполнения -- файл files/site<ID>/sitemap.xml.
**/
function sitemap_build($data) {
  $domainname=strtolower($_SERVER['HTTP_HOST']);
  if (is_array($data)) {
    $buffer='<?xml version="1.0" encoding="UTF-8"?>
<urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
';
    $time=time();
    $weekly=$time-2*7*24*60*60;
    $monthly=$time-2*30*24*60*60;
    foreach ($data as $curdata) {
      if (cms_page_available($curdata)) {
        $buffer.="<url>\n  <loc>http://".$domainname.htmlspecialchars(cms_hurl($curdata['url']))."</loc>\n";
        if ($curdata['url']=='/') $buffer.="  <priority>1.0</priority>\n";
        elseif (substr_count($curdata['url'],'/')<=2) $buffer.="  <priority>0.5</priority>\n";
        else $buffer.="  <priority>0.25</priority>\n";
        if ($curdata['lastmod']<$monthly) $buffer.="  <changefreq>monthly</changefreq>\n";
        elseif ($curdata['lastmod']<$weekly) $buffer.="  <changefreq>weekly</changefreq>\n";
        else $buffer.="  <changefreq>daily</changefreq>\n";
        $buffer.="</url>\n";
      }
    }
    $buffer.='</urlset>';
    $fh=fopen(cms_basedir().'sitemap.xml','w');
    if ($fh) {
      fputs($fh,$buffer);
      fclose($fh);
    }
  }
}
